package com.aisino.efence.utils;

import okhttp3.Response;

import java.util.Map;

/**
 * @author fzc
 * @package com.aisino.efence.utils
 * http工具类
 * @create 2018-04-09 15:08
 **/
public class OkhttpUtil {

    public static final String METHOD_GET = "GET";
    public static final String METHOD_POST = "POST";
    public static final String METHOD_PUT = "PUT";
    public static final String METHOD_DELETE = "DELETE";

    /**
     * get请求
     *
     * @param url：url
     */
    public static Response okHttpGet(String url) {
        return okHttpGet(url, null, null);
    }


    /**
     * get请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     */
    public static Response okHttpGet(String url, Map<String, String> paramsMap) {
        return okHttpGet(url, paramsMap, null);
    }

    /**
     * get请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     * @param headerMap：map集合，封装请求头键值对
     */
    public static Response okHttpGet(String url, Map<String, String> paramsMap, Map<String, String> headerMap) {
        return new RequestUtil(METHOD_GET, url, paramsMap, headerMap).execute();
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     */
    public static Response okHttpPost(String url, Map<String, String> paramsMap) {
        return okHttpPost(url, paramsMap, null);
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     * @param headerMap：map集合，封装请求头键值对
     */
    public static Response okHttpPost(String url, Map<String, String> paramsMap, Map<String, String> headerMap) {
        return new RequestUtil(METHOD_POST, url, paramsMap, headerMap).execute();
    }

    /**
     * post请求
     *
     * @param url：url
     */
    public static Response okHttpPut(String url) {
        return okHttpPut(url, null);
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     */
    public static Response okHttpPut(String url, Map<String, String> paramsMap) {
        return okHttpPut(url, paramsMap, null);
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     * @param headerMap：map集合，封装请求头键值对
     */
    public static Response okHttpPut(String url, Map<String, String> paramsMap, Map<String, String> headerMap) {
        return new RequestUtil(METHOD_PUT, url, paramsMap, headerMap).execute();
    }

    /**
     * post请求
     *
     * @param url：url
     */
    public static Response okHttpDelete(String url) {
        return okHttpDelete(url, null);
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     */
    public static Response okHttpDelete(String url, Map<String, String> paramsMap) {
        return okHttpDelete(url, paramsMap, null);
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param paramsMap：map集合，封装键值对参数
     * @param headerMap：map集合，封装请求头键值对
     */
    public static Response okHttpDelete(String url, Map<String, String> paramsMap, Map<String, String> headerMap) {
        return new RequestUtil(METHOD_DELETE, url, paramsMap, headerMap).execute();
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param jsonStr：json格式的键值对参数
     */
    public static Response okHttpPostJson(String url, String jsonStr) {
        return okHttpPostJson(url, jsonStr, null);
    }

    /**
     * post请求，可以传递参数
     *
     * @param url：url
     * @param jsonStr：json格式的键值对参数
     * @param headerMap：map集合，封装请求头键值对
     */
    public static Response okHttpPostJson(String url, String jsonStr, Map<String, String> headerMap) {
        return new RequestUtil(METHOD_POST, url, jsonStr, headerMap).execute();
    }


    public static void main(String[] args) {
        Response response = OkhttpUtil.okHttpGet("http://192.168.206.75:8008/secret/v1/sskey/000c6af5-c638-480b-9c1e-a672063c3746");
    }
}
